package com.ruoyi.web.controller.user;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hxzy.authentication.service.TsRealNameAuthenticationService;
import com.hxzy.user.entity.TmUser;
import com.hxzy.user.service.TmUserService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author mingqian.Wu
 * @since 2023-06-23
 */
@RestController
@RequestMapping("/tmUser")
@DataSource(DataSourceType.USERS)
public class TmUserController {


    @Autowired
    private TmUserService tmUserService;

    @Autowired
    private TsRealNameAuthenticationService tsRealNameAuthenticationService;


    @GetMapping("/getUnauthenticatedUsers/{pageIndex}/{pageSize}")
    @Anonymous
    public AjaxResult getUnauthenticatedUsers(@PathVariable Integer pageIndex, @PathVariable Integer pageSize) {
        PageHelper.startPage(pageIndex, pageSize);
        QueryWrapper<TmUser> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("user_id", "user_phone", "create_time");
        queryWrapper.eq("user_certification", 101);
        List<TmUser> list = tmUserService.list(queryWrapper);
        PageInfo pageInfo = new PageInfo(list);
        long total = pageInfo.getTotal();
        return AjaxResult.success(pageInfo.getList()).put("total", total);
    }


    @GetMapping("/searchUserByPhone/{phone}")
    public AjaxResult searchUserByPhone(@PathVariable String phone) {
        QueryWrapper<TmUser> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("user_id", "user_phone", "create_time");
        queryWrapper.eq("user_certification", 101);
        queryWrapper.eq("user_phone", phone);
        List<TmUser> list = tmUserService.list(queryWrapper);
        return AjaxResult.success(list);
    }
//
//
//    /**
//     * 根据用户id获取用户信息
//     * @param userId
//     * @return
//     */
//    @Anonymous
//    @GetMapping("/getUserInfo/{userId}")
//    public AjaxResult getUserInfo(@PathVariable String userId) {
//
//        TmUser byId = tmUserService.getById(userId);
//        return AjaxResult.success(byId);
//    }
//
//
//    /**
//     * 根据用户id获取实名信息
//     * @param userId
//     * @return
//     */
//    @Anonymous
//    @GetMapping("/getRealNameInfo/{userId}")
//    public AjaxResult getRealNameInfo(@PathVariable String userId) {
//        TsRealNameAuthentication byId = tsRealNameAuthenticationService.getRealNameInfo(userId);
//        return AjaxResult.success(byId);
//    }
//
//    @Anonymous
//    @PutMapping("/freezeOrRecover/{userId}/{accountStatus}")
//    public AjaxResult freezeOrRecover(
//            @PathVariable String userId,
//            @PathVariable Integer accountStatus){
//
//        TmUser tmUser = new TmUser();
//        tmUser.setUserId(userId);
//        tmUser.setAccountStatus(accountStatus);
//
//        tmUserService.updateById(tmUser);
//
//        return AjaxResult.success("冻结成功");
//    }
//
//    /**
//     * 条件分页查询用户列表
//     * @param current
//     * @param limit
//     * @param userVo
//     * @return
//     */
//    @Anonymous
//    @PostMapping("/getList/{current}/{limit}")
//    public AjaxResult getList(
//            @PathVariable Long current,
//            @PathVariable Long limit,
//            @RequestBody UserVo userVo
//    ){
//
//        Page<TmUser> page = new Page<>(current, limit);
//        //条件分页查询用户信息
//        tmUserService.selectPage(page, userVo);
//        List<TmUser> tmUserList = page.getRecords();
//
//        //获取查询出用户的id
//        List<String> ids = tmUserList.stream()
//                .map(user -> user.getUserId())
//                .collect(Collectors.toList());
//        Map<String, Object> map = new HashMap<>();//用来存放返回的信息
//        //无用户或者所有的用户都为进行实名认证
//        if (ids==null || ids.size() == 0) {
//
//            map.put("list", tmUserList);
//            map.put("total", page.getTotal());
//            return AjaxResult.success(map);
//        }
//        //根据用户编号查询身份证
//        Map<String, String> idNumber = tsRealNameAuthenticationService.getIdNumber(ids);
//
//        //将TmUser类型转换为vo
//        List<UserVo> userVoList = tmUserList.stream()
//                .map(record -> {
//                    UserVo userVo1 = new UserVo();
//                    BeanUtils.copyProperties(record, userVo1);
//                    return userVo1;
//                }).collect(Collectors.toList());
//
//        //将用户id存放到vo类中
//        userVoList.stream()
//                .forEach(record -> record.setIdNumber(idNumber.get(record.getUserId())));
//
//        if (StringUtils.hasLength(userVo.getIdNumber())) {
//            userVoList = userVoList.stream()
//                    .filter(userVo1 -> userVo1.getIdNumber().contains(userVo.getIdNumber()))
//                    .collect(Collectors.toList());
//        }
//
//        map.put("list", userVoList);
//        map.put("total", page.getTotal());
//
//        return AjaxResult.success(map);
//    }
//
//    @GetMapping("/getUnauthenticatedUsers/{pageIndex}/{pageSize}")
//    @Anonymous
//    public AjaxResult getUnauthenticatedUsers(@PathVariable Integer pageIndex, @PathVariable Integer pageSize) {
//        PageHelper.startPage(pageIndex, pageSize);
//        QueryWrapper<TmUser> queryWrapper = new QueryWrapper<>();
//        queryWrapper.select("user_id", "user_phone", "create_time");
//        queryWrapper.eq("user_certification", 101);
//        List<TmUser> list = tmUserService.list(queryWrapper);
//        PageInfo pageInfo = new PageInfo(list);
//        long total = pageInfo.getTotal();
//        return AjaxResult.success(pageInfo.getList()).put("total", total);
//    }
//
//    @GetMapping("/searchUserByPhone/{phone}")
//    public AjaxResult searchUserByPhone(@PathVariable String phone) {
//        QueryWrapper<TmUser> queryWrapper = new QueryWrapper<>();
//        queryWrapper.select("user_id", "user_phone", "create_time");
//        queryWrapper.eq("user_certification", 101);
//        queryWrapper.eq("user_phone", phone);
//        List<TmUser> list = tmUserService.list(queryWrapper);
//        return AjaxResult.success(list);
//    }


}

